import com.leetcode.tools.ListNode;

public class ReverseList {
    public static void main(String args[]){

        ListNode a1 = new ListNode(1);
        ListNode a2 = new ListNode(2);
        ListNode a3 = new ListNode(3);
        ListNode a4 = new ListNode(4);
        ListNode a5 = new ListNode(5);
        a1.next=a2;a2.next=a3;a3.next=a4;a4.next=a5;
        System.out.println(reverseList(a1));
        System.out.println(reverseList(a1));
    }

    public static ListNode reverseList(ListNode head) {
        if(head==null||head.next==null){
            return head;
        }
        ListNode dummy = new ListNode(-1);
        dummy.next = head;
         ListNode prev = dummy.next;
         ListNode pCur = prev.next;
         while (pCur != null) {
//             prev.next = pCur.next;
//             pCur.next = dummy.next;
//             dummy.next = pCur;
//             pCur = prev.next;

             ListNode newFirstNode = new ListNode(pCur.val);
             newFirstNode.next=dummy.next;
             dummy.next=newFirstNode;
             prev.next = prev.next.next;
             pCur=prev.next;




//             prev.next = pCur.next;
//             pCur=pCur.next;
//             newFirstNode.next=prev;
//             dummy.next=newFirstNode;



         }

//        ListNode prev = dummy.next;
//        ListNode cur = prev.next;
//        while(cur!=null){
//            ListNode newFirstNode = new ListNode(cur.val);
//            prev.next= prev.next.next;
//            newFirstNode.next = prev;
//            dummy.next = newFirstNode;
//            // prev=prev.next;
//            cur=cur.next;
//
//        }

        return dummy.next;
    }
}
